import java.util.*;

/**
 * @author LKQ
 * @date 2022/3/29 15:56
 * @description 思路：比较a b c的最后一位来判断是否需要翻转，注意最大的数为10^9， 2^30 > 10^9，所以只需要遍历30位即可
 */
public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        solution.minFlips(2, 6, 5);
    }
    public int minFlips(int a, int b, int c) {
        int ans = 0;
        for (int i = 0; i < 31; i++) {
            // 获取最低位, 注意是右移不是左移
            int bitA = (a >> i) & 1;
            int bitB = (b >> i) & 1;
            int bitC = (c >> i) & 1;
            if (bitC == 0) {
                // c的最低位为0，那么a, b最低位都需要为0
                ans += (bitA + bitB);
            }else {
                // c的最低位为1，那么a, b最低位只需要1个为1
                ans += (bitA + bitB) == 0 ? 1 : 0;
            }
        }
        return ans;
    }
}
